package com.lingdong.onlinejudge.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lingdong.onlinejudge.model.dto.topic.TopicAddDto;
import com.lingdong.onlinejudge.model.dto.topic.TopicBindDto;
import com.lingdong.onlinejudge.model.dto.topic.TopicQueryDto;
import com.lingdong.onlinejudge.model.dto.topic.TopicUpdateDto;
import com.lingdong.onlinejudge.model.entity.Topic;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lingdong.onlinejudge.model.vo.topic.TopicListVo;
import com.lingdong.onlinejudge.model.vo.topic.TopicVo;

import java.util.List;

/**
* @author lzw
* @description 针对表【topic(题目表)】的数据库操作Service
* @createDate 2024-02-12 20:26:24
*/
public interface TopicService extends IService<Topic> {

    /**
    *  添加题目
    * @param topicAddDto 题目添加Dto
    * @param token token
    * @return boolean
    */
    boolean addTopic(TopicAddDto topicAddDto, String token);

    /**
    *  更新题目
    * @param topicUpdateDto 题目更新Dto
    * @return boolean
    */
    boolean updateTopic(TopicUpdateDto topicUpdateDto);

    /**
    *  获取题目
    * @param id 题目id
    * @param token token
    * @return TopicVo
    */
    TopicVo getTopic(Long id, String token);

    /**
    *  查询题目列表
    * @param topicName 题目名称
    * @return TopicVo
    */
    List<TopicListVo> queryTopicList(String topicName);

    /**
    *  分页查询题目列表
    * @param topicQueryDto 题目查询Dto
    * @param token token
    * @return TopicVo
    */
    Page<TopicVo> queryTopicByPage(TopicQueryDto topicQueryDto, String token);

    /**
    *  删除题目
    * @param id 题目id
    * @return boolean
    */
    boolean deleteById(Long id);

    /**
    *  绑定题目
    * @param topicBindDto 题目绑定Dto
    * @param token token
    * @return boolean
    */
    boolean bindTopic(TopicBindDto topicBindDto, String token);





}
